package leetcode.code0152;

import leetcode.helper.MaxDebug;

public class Solution extends Solution152 {

	@Override
	public int maxProduct(int[] nums) {
		int len = nums.length;
		Integer max = null;// 包含当前位置连续的最大正数, 一定是正数和null, 连不上的时候null
		Integer min = null;// 包含当前位置连续的最小负数, 一定是负数和null, 连不上的时候null
		int ans = nums[0];
		for (int i = 0; i < len; i++) {
			int cur = nums[i];
			if (cur > 0) {
				max = max == null ? cur : max * cur;
				min = min == null ? null : min * cur;
				ans = Math.max(ans, max);
			} else if (cur < 0) {
				Integer temp = max;
				max = min == null ? null : min * cur;
				min = temp == null ? cur : temp * cur;
				ans = max == null ? ans : Math.max(ans, max);
			} else {
				max = null;
				min = null;
				ans = Math.max(ans, cur);
			}
		}
		return ans;
	}

	public static void main(String[] args) {
		Solution so = new Solution();
		MaxDebug.debug14(so);
		so.debug5();
		so.debug6();
	}

}
